package com.plm.k8s.myk8sapi.cmd;

import com.plm.k8s.myk8sapi.pojo.entity.pod.*;

import java.io.File;
import java.util.List;
import java.util.Map;

/**
 * pod相关的命令
 * @author 潘磊明
 * 版本号：1.0
 * 创建日期：2021/7/18 18:58
 */
public interface IPodCmd {

    /**
     * 获取所有的pods
     * @return
     * @throws Exception
     */
    List<PodEntity> listPods() throws Exception;

    /**
     * 获取pod列表
     * @param isAll
     * @param namespace
     * @param nameFilter
     * @param labelFilter
     * @return
     */
    List<PodEntity> listPods(boolean isAll, String namespace, String nameFilter, Map<String, String> labelFilter) throws Exception;

    /**
     * 根据文件创建pod
     * @param yamlFile
     * @return
     */
    boolean createPod(File yamlFile) throws Exception;

    /**
     * 创建pod（所有资源）
     * @param podEntity
     * @return
     * @throws Exception
     */
    boolean createPodDetail(PodEntity podEntity) throws Exception;

    /**
     * 删除pod
     * @param podName
     * @param namespace
     * @return
     * @throws Exception
     */
    boolean deletePod(String podName, String namespace) throws Exception;

    /**
     * 根据pod名称，批量删除pod
     * @param podsNames
     * @param namespace
     * @throws Exception
     */
    void deletePods(List<String> podsNames, String namespace) throws Exception;

    /**
     * 获取pods的cpu和内存
     * @param podName
     * @param namespace
     * @param labels
     * @param sortBy
     * @return
     */
    List<PodTopEntity> topPods(String podName, String namespace, Map<String, String> labels, String sortBy, boolean isAll) throws Exception;
}
